package methodref01;

import org.junit.Test;

import java.util.function.Consumer;

/**
 *  方法引用的概述:
 *    当我们使用已有类中的方法作为Lambda表达式对应接口中的抽象方法的实现时
 *    此时就可以用方法引用近一步剪坏Lambda表达式
 */
public class MethodRefDemo01 {
    @Test
    public void test01(){
        Consumer<String> c = str -> System.out.println(str);//Consumer<String> c = new MethodRefDemo01$$Lambda$01();
        c.accept("abc");
    }

    @Test
    public void test02(){
        /**
         * System:代表java中的一个类
         * out:public static final PrintStream out
         * println:它其实是PrintStream类中的方法
         */
        System.out.println(System.out);
        System.out.println("def");//public void println(String x)
    }

    @Test
    public void test03(){
        //Consumer<String> c = str -> System.out.println(str);
        Consumer<String> c = System.out::println;//::左侧代表我们要引用的类
                                                 //::右侧代表我们引用的方法
        c.accept("def");
    }
}
